#ifndef DESCENT_DETAIL_LOG_HPP_INCLUDED
#define DESCENT_DETAIL_LOG_HPP_INCLUDED

/**
 * @file 
 */

#include <iostream>
#include <string>
#include <boost/noncopyable.hpp>
#include <mocha/schwarz_counter.hpp>

namespace descent {

namespace detail {
class log : public boost::noncopyable {
public:
	log();
	operator std::ostream& ();
	std::ostream& message();
	std::ostream& warning();
	std::ostream& error();
private:
	std::ostream out_;
};
mocha::schwarz_counter<log> log_counter;
}

/**
 * 
 * @return 
 */
detail::log& log();
}

#endif

